package de.digisalt.dsnesds.editors.projectmeta.operations;

import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;

import de.digisalt.dsnesds.editors.projectmeta.model.Model;

public class ChangeGameVersionOperation extends AbstractUndoableOperation
{

	private Integer	previousVersion;

	public ChangeGameVersionOperation(String msg, Object model, Object newValue)
	{
		super(msg, model, newValue);
		// TODO Auto-generated constructor stub
	}

	@Override
	public IStatus execute(IProgressMonitor monitor, IAdaptable info)
			throws ExecutionException
	{
		((Model) model).setVersion((Integer) newValue);
		return Status.OK_STATUS;
	}

	@Override
	public IStatus redo(IProgressMonitor monitor, IAdaptable info)
			throws ExecutionException
	{
		((Model) model).setVersion((Integer) newValue);
		return Status.OK_STATUS;
	}

	@Override
	public IStatus undo(IProgressMonitor monitor, IAdaptable info)
			throws ExecutionException
	{
		((Model) model).setVersion(previousVersion);
		return Status.OK_STATUS;
	}

	@Override
	public void initVariables()
	{
		this.previousVersion = (Model) model.getVersion();
	}

}
